package com.ash.util;

import java.util.Random;
import java.util.regex.Pattern;

/**
 * @author : Chen Chao
 * @description 生成验证码工具类
 * @encoding : UTF-8
 * @date : 2022/2/7 21:24
 * @file : CodeUtils.java
 * @software : IntelliJ IDEA
 * @since : 1.8
 */
public class CodeUtils {
    /**
     * 要生成的验证码长度
     */
    public static final int CHECK_CODE_LENGTH = 6;
    /**
     * 每天最多验证码发送次数
     */
    public static final int MAX_COUNT = 3;
    /**
     * 手机号模板
     */
    public static final Pattern IPHONE_PATTERN = Pattern.compile("^[1][3,458][0-9]{9}$");
    /**
     * 验证码过期时间秒
     */
    public static final int TIME_OUT = 120;

    /**
     * 生成随机验证码
     *
     * @return 生成的随机验证码
     * @author chen chao
     */
    public static String createCheckCode() {
        return createCheckCode(CHECK_CODE_LENGTH);
    }

    /**
     * 生成随机验证码
     *
     * @param length 验证码长度
     * @return 生成的随机验证码
     * @author chen chao
     */
    public static String createCheckCode(int length) {
        if (length <= 0) {
            throw new RuntimeException("验证码长度异常！");
        }
        Random random = new Random();
        int i = random.nextInt((int) Math.pow(10, length));
        return String.format("%0" + length + "d", i);
    }

    /**
     * 手机号验证
     *
     * @param str 要验证的手机号
     * @return 验证通过返回true
     * @author chen chao
     */
    public static boolean isMobile(String str) {
        return IPHONE_PATTERN.matcher(str).matches();
    }


}
